package com.tbit.uqbike.client.service;

import com.tbit.uqbike.client.pojo.User;
import com.tbit.uqbike.client.pojo.dto.UnpaidOrderUseCarDTO;
import com.tbit.uqbike.client.pojo.vo.UnpaidOrderCanUseCarVO;
import com.tbit.uqbike.client.pojo.vo.UnpaidOrderUseCarFee;

/**
 * 未支付订单卡券抵扣相关功能接口
 *
 * @author <a href="mailto:chen.wutian@tbit.com.cn">BUGTian</a>
 * @since 2025/5/15
 */
public interface UnpaidOrderDeductionService {

    /**
     * 根据用户id获取未支付订单可使用的卡券信息
     * @param orderNO 订单编号
     * @return 未支付订单可使用的卡券信息
     */
    UnpaidOrderCanUseCarVO getUnpaidOrderCanUseCar(String orderNO);

    /**
     * 根据卡券获取抵扣后的费用详情
     * @param orderNO 订单编号
     * @param unpaidOrderUseCarDTO 使用的卡券信息
     * @return 未支付订单使用卡券抵扣后的费用详情
     */
    UnpaidOrderUseCarFee getFee(String orderNO, UnpaidOrderUseCarDTO unpaidOrderUseCarDTO);

    /**
     * 使用卡券进行抵扣
     * @param orderNO 订单编号
     * @param unpaidOrderUseCarDTO 使用的卡券信息
     * @param user 用户信息
     * @return 成功/失败
     */
    Boolean useCar(String orderNO, UnpaidOrderUseCarDTO unpaidOrderUseCarDTO, User user);
}
